<?php

class SearchController extends Controller{
	
	/**
	* Declares class-based actions.
	*/
	public function actions()
	{
		return array(
		// captcha action renders the CAPTCHA image displayed on the contact page
				'captcha'=>array(
					'class'=>'CCaptchaAction',
					'backColor'=>0xFFFFFF,
		),
		// page action renders "static" pages stored under 'protected/views/site/pages'
		// They can be accessed via: index.php?r=site/page&view=FileName
				'page'=>array(
					'class'=>'CViewAction',
		),
		);
	}
	
	public function actionSearchCities() {
		$q = strtolower($_GET["term"]);
		if (!$q) return;
		
		require_once 'protected/views/site/cities.php';
		
		function array_to_json( $array ){
		
		    if( !is_array( $array ) ){
		        return false;
		    }
		
		    $associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) ));
		    if( $associative ){
		
		        $construct = array();
		        foreach( $array as $key => $value ){
		
		            // We first copy each key/value pair into a staging array,
		            // formatting each key and value properly as we go.
		
		            // Format the key:
		            if( is_numeric($key) ){
		                $key = "key_$key";
		            }
		            $key = "\"".addslashes($key)."\"";
		
		            // Format the value:
		            if( is_array( $value )){
		                $value = array_to_json( $value );
		            } else if( !is_numeric( $value ) || is_string( $value ) ){
		                $value = "\"".addslashes($value)."\"";
		            }
		
		            // Add to staging array:
		            $construct[] = "$key: $value";
		        }
		
		        // Then we collapse the staging array into the JSON form:
		        $result = "{ " . implode( ", ", $construct ) . " }";
		
		    } else { // If the array is a vector (not associative):
		
		        $construct = array();
		        foreach( $array as $value ){
		
		            // Format the value:
		            if( is_array( $value )){
		                $value = array_to_json( $value );
		            } else if( !is_numeric( $value ) || is_string( $value ) ){
		                $value = "'".addslashes($value)."'";
		            }
		
		            // Add to staging array:
		            $construct[] = $value;
		        }
		
		        // Then we collapse the staging array into the JSON form:
		        $result = "[ " . implode( ", ", $construct ) . " ]";
		    }
		
		    return $result;
		}
		
		$result = array();
		foreach ($items as $key=>$value) {
			if (strpos(strtolower($key), $q) !== false) {
				array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($key)));
			}
			if (count($result) > 11)
				break;
		}
		echo array_to_json($result);
	}
}
?>